We've updated this course, so the videos don't exactly match the lessons. However, we've included them for you to review, and we will update them later in 2025.
After completing this lesson, you’ll be able to:
Parameters are controls that define how FME operates; for example, how a reader reads data, how a transformer transforms it, and how a writer writes it. Almost every component in FME has parameters of one type or another. You've already run into them while using FME. In this course, we'll look closer at how they work and how you can allow the person running the workspace to control them at run-time.
This course focuses on the use of parameters in FME Form. However, parameters are also crucial for constructing self-serve workflows in FME Flow. We recommend completing this course first and then checking out Build Basic Self-Serve Workflows and Build Versatile Self-Serve Workflows when you are ready to learn about parameters in FME Flow. We cover those courses in the FME Flow Authoring learning path.
When examining the types of parameters, it’s helpful to consider the types of people who use FME and their roles in the process.
Workspace authors design and create workspaces. They use FME Workbench and set parameters to control how the workspace runs.
Workspace users are the people who use a workspace without necessarily having created it first. They might have little knowledge of FME and may never have used FME Workbench, but they may still need to set parameters to control how the workspace runs.
In light of these two roles, there are two different types of parameters: FME parameters (for authors to use) and user parameters (for FME users to use).
The concept of workspace users who have never heard of FME sounds like an oxymoron. However, FME is an enterprise integration platform. People may use FME at that level without having any knowledge of FME. Users on the client side of FME Flow might use a custom web page or application that uses FME to process the data behind the scenes. So, it's possible to set workspace parameters without knowing what a workspace is!
FME parameters are those built into the FME Workbench interface. They directly control translations, which can be found in various places. FME parameters can be located in:
For example, here are some writer parameters shown in the Navigator:
Here, for example, are the FME parameters for a text file writer. They include options to overwrite or append to an existing text file and the type of character encoding that should be used.
These are parameters the workspace author will use. The user is not expected to set these because they are not assumed to have enough experience with Workbench to know where to find the parameter or how to set it.
For example, the author might decide that the byte order mark should not be written in this output.
They double-click the parameter to open a dialog in which they can change the parameter value.
In case you were wondering, the Byte Order Mark (aka BOM) is a special character found in the header of a text file. It denotes whether the text is in a Unicode encoding, which Unicode encoding it is, and its endianness. This helps different applications read the data correctly.
You want to know what "endianness" means now, don't you?! I bet you wouldn't guess it has to do with boiled eggs...
If you are a regular FME user, you may often apply the same parameter values to the same transformers, readers, or writers. For example, you may use the same password in a Joiner transformer or the same tolerance in a Snapper transformer. Presets allow you to save your set of parameter values to use them again and override the installed (FME) default values.
The Presets button at the bottom of a Parameters dialog allows you to create, load, update, and delete presets, or to use the default FME values:
User parameters are those that an FME author creates for an FME user to use. In other words, they are a way for the end-user of the workspace to provide their input, regardless of where and how the workspace is being used.
User parameters appear in a particular section of the Navigator window labeled User Parameters. Here, for example, two user parameters have been defined:
Each of these user parameters allows the end-user of a workspace to enter information into the translation, such as whether to process line features and what color to write them in.
You can create user parameters in two ways.
The Navigator
One is directly in the Navigator by right-clicking on User Parameters and choosing Manage User Parameters:
The Parameter Manager dialog lets you create or edit user parameters. You can create a new one by clicking the green plus icon: . You can choose from many types of user parameters, letting you ensure the user enters the correct information, e.g., a number or a file path.
Once you choose a type, the right side of the Parameter Manager shows the configuration options. Here's an example where the author is creating a parameter in which the user can enter their name:
You can add conditional logic controlling groups to guide the user when filling out the parameters. See the documentation for more details.
⭐New for FME 2025.0: you can add more complex conditional logic. Check out this video for more information.
Pre-Linked
The second way of creating a user parameter is pre-linked. You can do this in the Navigator by right-clicking a parameter and choosing Create User Parameter, or in a transformer dialog, you can click the right-pointing arrow and choose User Parameter > Create User Parameter. This method is convenient and fast because it automatically links the newly created user parameter to the FME parameter you started with (more on linking in a later lesson).
However, it is less flexible than the first method. Workbench will automatically choose a parameter type that matches the FME parameter you started with, but sometimes, you might want to restrict the options more than this method allows. For example, if you use this method to create a user parameter for the format of a Generic writer, the user will be able to pick from any available FME writer format, which is often overwhelming and can lead to errors.
Try using the pre-linked method first. If you need a more flexible solution, you can delete the created user parameter and make a new one from scratch.
You can also copy, paste, and duplicate user parameters. This allows the workspace author to duplicate existing parameters and make changes instead of having to build several near-identical parameters from scratch:
This includes being able to paste a parameter definition into a different workspace from which it was copied.
Once a user parameter is defined, the workspace can be run in Prompt for Parameters mode, which is set in the Run menu and enabled by default:
With this mode activated in FME Workbench, the user is prompted to supply values through a simple dialog:
In FME Flow, the user is prompted through a web page:
User parameter values can also be set using the FME Flow REST API, allowing developers to interact with FME workspaces programmatically.
Getting input from a user is pointless if not used, so doing something with that input is necessary.
User parameters can be employed in several places. Firstly, they can be tied to an FME parameter (more information in the next section), but they can also be used to provide values to transformers and attributes in a workspace.
For example, here, the author is making use of the color and username parameters (in the FeatureColorSetter and AttributeManager transformers):
The author set up these transformers to use the parameter as input by selecting it in the transformer like so:
When the workspace is run, the end user can select the color of features to write, enter their name into a text field, and enter it into the UpdatedBy attribute in the output.
The screenshot above shows a workspace with parameter prompts and feature caching enabled.
Be aware: FME only provides the prompt if running a workspace section that uses a published parameter. In other words, a partial run that fetches data from caches may prevent a parameter prompt if that parameter is not used in that partial run.
You can use Run > Rerun Entire Workspace if you are having trouble getting prompted.